今天來分享vaultflix的tech stack,以及一些我當時開發的經驗分享
基本上我整個專案就是以個人用的side project做出發,兼顧一些工作上比較不熟的技術做練習
| Layer | Technology | 原因 |
|---|---|---|
| 前端 | React | 有寫過,考量到未來走M版的轉換或許會比較簡單 |
| 後端 | GO | 想說影片網站的後端功能其實偏單純就選擇GO |
| DB | PostgreSQL | 那陣子看了很多postgreSQL有多all in one,就想試試看 |
| 持久化 | MinIO | 有用過,實際只拿來放縮圖 |
| API Gateway | nginx | 拿來練習用 |
我這邊展示當初鐵人賽的規畫表,要說明的是就算只是想做個最小MVP,我至少也要兩三天以上的時間,但有了AI(claude code opus 4.6)後,當初才幾個小時的時間就出了第一版。
## Schedule
- 架構設計 5 天
- 設計相關
- 架構圖、想法揭露
- 流程圖、用例圖
- 架構範本
- ORM 配置
- 前後端串接 2 天
- API 1 天
- 各API文檔
- socket 1 天
- 影片儲存空間 2 天
- minIO架設
- 影片meta data 2 天
- DB 架設 mysql
- Table schema 設計
- Web Server
- 主功能列表 3 天
- 影片來源導入 1 天
- 影片串流 2 天 ffmpeg, http LS, webRTC
- 快轉、播放速度
- UI開發 6 天
- 整體前端架構 1 天
- 多筆瀏覽 組件 2 天
- 單筆撥放 組件 2 天
- 取資料 1 天
- CI/CD 5 天
- 建置過程 github actions
- 單元測試
- 功能測試
- 壓力測試 k6
- 部屬單位 aws or google
- 次功能列表 4 天
- 推薦影片功能 ⇒ 數據分析、AI
- 統計觀看數據
- 影片預覽 UI
- 增加AI chat協助查詢相關影片資訊 OCR and LLM
下面是我整個專案到目前為止 313 個 commit,大概有九個時段。
2026-04-06:第一天 78 個 commit
整個專案的誕生,我定好tech stack,我記憶中我就把整個tech stack加上功能描述,這些就是我給出去的prompt,然後整個專案都是用 superpowers 這個 plugin 來幫我約束跟開發整個規格。
2026-05-02–03:hover preview,15 個 commit
這次主要是加預覽的功能。
2026-06-14–15:11 個 commit,全部是 fix
這次是突然想到前幾次都沒做完整的code review,結果就讓AI找出不少bug。
2026-06-21–22:CI/CD 規則化
這次是看到loop engineering,開始想讓AI全權掌握開發到佈署的整個過程。
2026-06-22+06-29:UI 重設計,前台與 admin
這次因為得知claude design的強大,所以做了前台跟 admin 介面重新設計。
2026-06-28–30:auto-tagging,33 個 commit
這邊是做AI自動化幫影片打標籤,但沒做完,因為是瑟瑟的影片,評估後覺得要自部屬的模型才可行。
2026-07-05–06:觀看統計與播放遙測,49 個 commit
這次其實是回頭去找有那些沒做的可以讓我的AI閒不下來。
2026-06-30+07-21–25:HLS,42 個 commit
這次是做影片相容性。
2026-08-22–24:13 個 commit,閒置四週後回來
這次是因為要寫鐵人賽,回頭用自己的作品發現影片相容性有bug,才讓AI修好。
其實整個專案做下來,我發現我從第一天就有做的 ROADMAP.md,是我中間過程跳出去能再跳回來的關鍵,因為我自己發現,人一懶不只不會看代碼,連文件都懶得看,我會變的只想知道目前功能哪些還沒做,所以很多時候我都是靠這個檔案抓回我的記憶。
而今天也是因為鐵人賽,讓我重新回顧這專案的歷程,一個有感的點是,其實一個開發者對於專案的記憶,真的全是來自為了什麼而做,至少我自己是,以我工作上的經驗,如果我沒接手過,我不知道這是為了什麼而做,真的是很難去理解到底是為什麼要有這件事。
明天開始,我會每天以上面的一個段落去揭露我當時跟AI協作的過程,以及看我能再從中萃取出什麼我認為不錯的部分,就像今天的 ROADMAP.md 一樣。